src/HOL/Tools/SMT/verit_proof.ML
changeset 75561 b6239ed66b94
parent 75274 e89709b80b6e
equal deleted inserted replaced
75560:aeb797356de0 75561:b6239ed66b94
    53   val eq_congruent_pred_rule : string
    53   val eq_congruent_pred_rule : string
    54   val skolemization_steps : string list
    54   val skolemization_steps : string list
    55   val theory_resolution2_rule: string
    55   val theory_resolution2_rule: string
    56   val equiv_pos2_rule: string
    56   val equiv_pos2_rule: string
    57   val th_resolution_rule: string
    57   val th_resolution_rule: string
       
    58   val and_pos_rule: string
    58 
    59 
    59   val is_skolemization: string -> bool
    60   val is_skolemization: string -> bool
    60   val is_skolemization_step: veriT_replay_node -> bool
    61   val is_skolemization_step: veriT_replay_node -> bool
    61 
    62 
    62   val number_of_steps: veriT_replay_node list -> int
    63   val number_of_steps: veriT_replay_node list -> int
   246 val ite_intro_rule = "ite_intro"
   247 val ite_intro_rule = "ite_intro"
   247 val default_skolem_rule = "sko_forall" (*arbitrary, but must be one of the skolems*)
   248 val default_skolem_rule = "sko_forall" (*arbitrary, but must be one of the skolems*)
   248 val theory_resolution2_rule = "__theory_resolution2" (*arbitrary*)
   249 val theory_resolution2_rule = "__theory_resolution2" (*arbitrary*)
   249 val equiv_pos2_rule = "equiv_pos2"
   250 val equiv_pos2_rule = "equiv_pos2"
   250 val th_resolution_rule = "th_resolution"
   251 val th_resolution_rule = "th_resolution"
       
   252 val and_pos_rule = "and_pos"
   251 
   253 
   252 val skolemization_steps = ["sko_forall", "sko_ex"]
   254 val skolemization_steps = ["sko_forall", "sko_ex"]
   253 val is_skolemization = member (op =) skolemization_steps
   255 val is_skolemization = member (op =) skolemization_steps
   254 val keep_app_symbols = member (op =) [eq_congruent_pred_rule, eq_congruent_rule, ite_intro_rule]
   256 val keep_app_symbols = member (op =) [eq_congruent_pred_rule, eq_congruent_rule, ite_intro_rule, and_pos_rule]
   255 val keep_raw_lifting = member (op =) [eq_congruent_pred_rule, eq_congruent_rule, ite_intro_rule]
   257 val keep_raw_lifting = member (op =) [eq_congruent_pred_rule, eq_congruent_rule, ite_intro_rule, and_pos_rule]
   256 val is_SH_trivial = member (op =) [not_not_rule, contract_rule]
   258 val is_SH_trivial = member (op =) [not_not_rule, contract_rule]
   257 
   259 
   258 fun is_skolemization_step (VeriT_Replay_Node {id, ...}) = is_skolemization id
   260 fun is_skolemization_step (VeriT_Replay_Node {id, ...}) = is_skolemization id
   259 
   261 
   260 (* Even the veriT developers do not know if the following rule can still appear in proofs: *)
   262 (* Even the veriT developers do not know if the following rule can still appear in proofs: *)