Theory IsaSAT_Profile_LLVM

theory IsaSAT_Profile_LLVM
  imports IsaSAT_Profile IsaSAT_Literals_LLVM
begin

sepref_register IsaSAT_Profile.start
  IsaSAT_Profile.stop
  IsaSAT_Profile.PROPAGATE
  IsaSAT_Profile.ANALYZE
  IsaSAT_Profile.GC
  IsaSAT_Profile.REDUCE
  IsaSAT_Profile.INITIALISATION
  IsaSAT_Profile.MINIMIZATION

sepref_def start_profile
  is RETURN o IsaSAT_Profile.start
  :: word_assnk a unit_assn
  unfolding IsaSAT_Profile.start_def
  by sepref

sepref_def stop_profile
  is RETURN o IsaSAT_Profile.stop
  :: word_assnk a unit_assn
  unfolding IsaSAT_Profile.stop_def
  by sepref


sepref_def IsaSAT_Profile_PROPAGATE
  is uncurry0 (RETURN IsaSAT_Profile.PROPAGATE)
  :: unit_assnk a word_assn
  unfolding IsaSAT_Profile.PROPAGATE_def
  by sepref

sepref_def IsaSAT_Profile_ANALYZE
  is uncurry0 (RETURN IsaSAT_Profile.ANALYZE)
  :: unit_assnk a word_assn
  unfolding IsaSAT_Profile.ANALYZE_def
  by sepref

sepref_def IsaSAT_Profile_GC
  is uncurry0 (RETURN IsaSAT_Profile.GC)
  :: unit_assnk a word_assn
  unfolding IsaSAT_Profile.GC_def
  by sepref

sepref_def IsaSAT_Profile_REDUCE
  is uncurry0 (RETURN IsaSAT_Profile.REDUCE)
  :: unit_assnk a word_assn
  unfolding IsaSAT_Profile.REDUCE_def
  by sepref


sepref_def IsaSAT_Profile_MINIMIZATION
  is uncurry0 (RETURN IsaSAT_Profile.MINIMIZATION)
  :: unit_assnk a word_assn
  unfolding IsaSAT_Profile.MINIMIZATION_def
  by sepref

sepref_def IsaSAT_Profile_INITIALISATION
  is uncurry0 (RETURN IsaSAT_Profile.INITIALISATION)
  :: unit_assnk a word_assn
  unfolding IsaSAT_Profile.INITIALISATION_def
  by sepref

sepref_def IsaSAT_Profile_PURE_LITERAL
  is uncurry0 (RETURN IsaSAT_Profile.PURE_LITERAL)
  :: unit_assnk a word_assn
  unfolding IsaSAT_Profile.PURE_LITERAL_def
  by sepref

sepref_def IsaSAT_Profile_BINARY_SIMP
  is uncurry0 (RETURN IsaSAT_Profile.BINARY_SIMP)
  :: unit_assnk a word_assn
  unfolding IsaSAT_Profile.BINARY_SIMP_def
  by sepref

sepref_def IsaSAT_Profile_SUBSUMPTION
  is uncurry0 (RETURN IsaSAT_Profile.SUBSUMPTION)
  :: unit_assnk a word_assn
  unfolding IsaSAT_Profile.SUBSUMPTION_def
  by sepref

experiment begin

export_llvm
    IsaSAT_Profile_PROPAGATE is PROFILE_CST IsaSAT_Profile_PROPAGATE()
    IsaSAT_Profile_REDUCE is PROFILE_CST IsaSAT_Profile_REDUCE()
    IsaSAT_Profile_GC is PROFILE_CST IsaSAT_Profile_GC()
    IsaSAT_Profile_ANALYZE is PROFILE_CST IsaSAT_Profile_ANALYZE()
    IsaSAT_Profile_MINIMIZATION is PROFILE_CST IsaSAT_Profile_MINIMIZATION()
    IsaSAT_Profile_INITIALISATION is PROFILE_CST IsaSAT_Profile_INITIALISATION()
    IsaSAT_Profile_SUBSUMPTION is PROFILE_CST IsaSAT_Profile_SUBSUMPTION()
    IsaSAT_Profile_PURE_LITERAL is PROFILE_CST IsaSAT_Profile_PURE_LITERAL()
    IsaSAT_Profile_BINARY_SIMP is PROFILE_CST IsaSAT_Profile_BINARY_SIMP()
    defines 
       typedef int8_t PROFILE_CST;
  
end
end