71 val forall_intr_proof : term -> string -> proof -> proof |
71 val forall_intr_proof : term -> string -> proof -> proof |
72 val varify_proof : term -> (string * sort) list -> proof -> proof |
72 val varify_proof : term -> (string * sort) list -> proof -> proof |
73 val freezeT : term -> proof -> proof |
73 val freezeT : term -> proof -> proof |
74 val rotate_proof : term list -> term -> int -> proof -> proof |
74 val rotate_proof : term list -> term -> int -> proof -> proof |
75 val permute_prems_prf : term list -> int -> int -> proof -> proof |
75 val permute_prems_prf : term list -> int -> int -> proof -> proof |
76 val instantiate : (typ * typ) list -> (term * term) list -> proof -> proof |
76 val instantiate : ((indexname * sort) * typ) list * ((indexname * typ) * term) list |
|
77 -> proof -> proof |
77 val lift_proof : term -> int -> term -> proof -> proof |
78 val lift_proof : term -> int -> term -> proof -> proof |
78 val assumption_proof : term list -> term -> int -> proof -> proof |
79 val assumption_proof : term list -> term -> int -> proof -> proof |
79 val bicompose_proof : term list -> term list -> term list -> term option -> |
80 val bicompose_proof : term list -> term list -> term list -> term option -> |
80 int -> proof -> proof -> proof |
81 int -> proof -> proof -> proof |
81 val equality_axms : (string * term) list |
82 val equality_axms : (string * term) list |
609 val (_, lift_all) = Logic.lift_fns (Bi, inc); |
610 val (_, lift_all) = Logic.lift_fns (Bi, inc); |
610 |
611 |
611 fun lift'' Us Ts t = strip_abs Ts (Logic.incr_indexes (Us, inc) (mk_abs Ts t)); |
612 fun lift'' Us Ts t = strip_abs Ts (Logic.incr_indexes (Us, inc) (mk_abs Ts t)); |
612 |
613 |
613 fun lift' Us Ts (Abst (s, T, prf)) = |
614 fun lift' Us Ts (Abst (s, T, prf)) = |
614 (Abst (s, apsome' (same (incr_tvar inc)) T, lifth' Us (dummyT::Ts) prf) |
615 (Abst (s, apsome' (same (Logic.incr_tvar inc)) T, lifth' Us (dummyT::Ts) prf) |
615 handle SAME => Abst (s, T, lift' Us (dummyT::Ts) prf)) |
616 handle SAME => Abst (s, T, lift' Us (dummyT::Ts) prf)) |
616 | lift' Us Ts (AbsP (s, t, prf)) = |
617 | lift' Us Ts (AbsP (s, t, prf)) = |
617 (AbsP (s, apsome' (same (lift'' Us Ts)) t, lifth' Us Ts prf) |
618 (AbsP (s, apsome' (same (lift'' Us Ts)) t, lifth' Us Ts prf) |
618 handle SAME => AbsP (s, t, lift' Us Ts prf)) |
619 handle SAME => AbsP (s, t, lift' Us Ts prf)) |
619 | lift' Us Ts (prf % t) = (lift' Us Ts prf % Option.map (lift'' Us Ts) t |
620 | lift' Us Ts (prf % t) = (lift' Us Ts prf % Option.map (lift'' Us Ts) t |
620 handle SAME => prf % apsome' (same (lift'' Us Ts)) t) |
621 handle SAME => prf % apsome' (same (lift'' Us Ts)) t) |
621 | lift' Us Ts (prf1 %% prf2) = (lift' Us Ts prf1 %% lifth' Us Ts prf2 |
622 | lift' Us Ts (prf1 %% prf2) = (lift' Us Ts prf1 %% lifth' Us Ts prf2 |
622 handle SAME => prf1 %% lift' Us Ts prf2) |
623 handle SAME => prf1 %% lift' Us Ts prf2) |
623 | lift' _ _ (PThm (s, prf, prop, Ts)) = |
624 | lift' _ _ (PThm (s, prf, prop, Ts)) = |
624 PThm (s, prf, prop, apsome' (same (map (incr_tvar inc))) Ts) |
625 PThm (s, prf, prop, apsome' (same (map (Logic.incr_tvar inc))) Ts) |
625 | lift' _ _ (PAxm (s, prop, Ts)) = |
626 | lift' _ _ (PAxm (s, prop, Ts)) = |
626 PAxm (s, prop, apsome' (same (map (incr_tvar inc))) Ts) |
627 PAxm (s, prop, apsome' (same (map (Logic.incr_tvar inc))) Ts) |
627 | lift' _ _ _ = raise SAME |
628 | lift' _ _ _ = raise SAME |
628 and lifth' Us Ts prf = (lift' Us Ts prf handle SAME => prf); |
629 and lifth' Us Ts prf = (lift' Us Ts prf handle SAME => prf); |
629 |
630 |
630 val ps = map lift_all (Logic.strip_imp_prems prop); |
631 val ps = map lift_all (Logic.strip_imp_prems prop); |
631 val k = length ps; |
632 val k = length ps; |