86 else if T = HOLogic.intT then c $ (int x) $ (int y) |
86 else if T = HOLogic.intT then c $ (int x) $ (int y) |
87 else if T = HOLogic.natT then c $ (nat x) $ (nat y) |
87 else if T = HOLogic.natT then c $ (nat x) $ (nat y) |
88 else if T = HOLogic.boolT then c $ (fm x) $ (fm y) |
88 else if T = HOLogic.boolT then c $ (fm x) $ (fm y) |
89 else replace (c $ x $ y) (*non-numeric comparison*) |
89 else replace (c $ x $ y) (*non-numeric comparison*) |
90 (*abstraction of a formula*) |
90 (*abstraction of a formula*) |
91 and fm ((c as Const(@{const_name "op &"}, _)) $ p $ q) = c $ (fm p) $ (fm q) |
91 and fm ((c as Const(@{const_name HOL.conj}, _)) $ p $ q) = c $ (fm p) $ (fm q) |
92 | fm ((c as Const(@{const_name "op |"}, _)) $ p $ q) = c $ (fm p) $ (fm q) |
92 | fm ((c as Const(@{const_name HOL.disj}, _)) $ p $ q) = c $ (fm p) $ (fm q) |
93 | fm ((c as Const(@{const_name HOL.implies}, _)) $ p $ q) = c $ (fm p) $ (fm q) |
93 | fm ((c as Const(@{const_name HOL.implies}, _)) $ p $ q) = c $ (fm p) $ (fm q) |
94 | fm ((c as Const(@{const_name Not}, _)) $ p) = c $ (fm p) |
94 | fm ((c as Const(@{const_name Not}, _)) $ p) = c $ (fm p) |
95 | fm ((c as Const(@{const_name True}, _))) = c |
95 | fm ((c as Const(@{const_name True}, _))) = c |
96 | fm ((c as Const(@{const_name False}, _))) = c |
96 | fm ((c as Const(@{const_name False}, _))) = c |
97 | fm (t as Const(@{const_name "op ="}, Type ("fun", [T,_])) $ _ $ _) = rel (T, t) |
97 | fm (t as Const(@{const_name "op ="}, Type ("fun", [T,_])) $ _ $ _) = rel (T, t) |