equal
deleted
inserted
replaced
8 sig |
8 sig |
9 val conjunction: cterm |
9 val conjunction: cterm |
10 val mk_conjunction: cterm * cterm -> cterm |
10 val mk_conjunction: cterm * cterm -> cterm |
11 val mk_conjunction_balanced: cterm list -> cterm |
11 val mk_conjunction_balanced: cterm list -> cterm |
12 val dest_conjunction: cterm -> cterm * cterm |
12 val dest_conjunction: cterm -> cterm * cterm |
|
13 val dest_conjunctions: cterm -> cterm list |
13 val cong: thm -> thm -> thm |
14 val cong: thm -> thm -> thm |
14 val convs: (cterm -> thm) -> cterm -> thm |
15 val convs: (cterm -> thm) -> cterm -> thm |
15 val conjunctionD1: thm |
16 val conjunctionD1: thm |
16 val conjunctionD2: thm |
17 val conjunctionD2: thm |
17 val conjunctionI: thm |
18 val conjunctionI: thm |
41 |
42 |
42 fun dest_conjunction ct = |
43 fun dest_conjunction ct = |
43 (case Thm.term_of ct of |
44 (case Thm.term_of ct of |
44 (Const ("Pure.conjunction", _) $ _ $ _) => Thm.dest_binop ct |
45 (Const ("Pure.conjunction", _) $ _ $ _) => Thm.dest_binop ct |
45 | _ => raise TERM ("dest_conjunction", [Thm.term_of ct])); |
46 | _ => raise TERM ("dest_conjunction", [Thm.term_of ct])); |
|
47 |
|
48 fun dest_conjunctions ct = |
|
49 (case try dest_conjunction ct of |
|
50 NONE => [ct] |
|
51 | SOME (A, B) => dest_conjunctions A @ dest_conjunctions B); |
46 |
52 |
47 |
53 |
48 |
54 |
49 (** derived rules **) |
55 (** derived rules **) |
50 |
56 |