equal
deleted
inserted
replaced
44 apply (reify ) |
44 apply (reify ) |
45 oops |
45 oops |
46 |
46 |
47 datatype fm = And fm fm | Or fm fm | Imp fm fm | Iff fm fm | NOT fm | At nat |
47 datatype fm = And fm fm | Or fm fm | Imp fm fm | Iff fm fm | NOT fm | At nat |
48 |
48 |
49 consts Ifm :: "fm \<Rightarrow> bool list \<Rightarrow> bool" |
49 primrec Ifm :: "fm \<Rightarrow> bool list \<Rightarrow> bool" where |
50 primrec |
|
51 "Ifm (At n) vs = vs!n" |
50 "Ifm (At n) vs = vs!n" |
52 "Ifm (And p q) vs = (Ifm p vs \<and> Ifm q vs)" |
51 | "Ifm (And p q) vs = (Ifm p vs \<and> Ifm q vs)" |
53 "Ifm (Or p q) vs = (Ifm p vs \<or> Ifm q vs)" |
52 | "Ifm (Or p q) vs = (Ifm p vs \<or> Ifm q vs)" |
54 "Ifm (Imp p q) vs = (Ifm p vs \<longrightarrow> Ifm q vs)" |
53 | "Ifm (Imp p q) vs = (Ifm p vs \<longrightarrow> Ifm q vs)" |
55 "Ifm (Iff p q) vs = (Ifm p vs = Ifm q vs)" |
54 | "Ifm (Iff p q) vs = (Ifm p vs = Ifm q vs)" |
56 "Ifm (NOT p) vs = (\<not> (Ifm p vs))" |
55 | "Ifm (NOT p) vs = (\<not> (Ifm p vs))" |
57 |
56 |
58 lemma "Q \<longrightarrow> (D & F & ((~ D) & (~ F)))" |
57 lemma "Q \<longrightarrow> (D & F & ((~ D) & (~ F)))" |
59 apply (reify Ifm.simps) |
58 apply (reify Ifm.simps) |
60 oops |
59 oops |
61 |
60 |
397 | "Iprod One vs = 1" |
396 | "Iprod One vs = 1" |
398 | "Iprod (Var n) vs = vs!n" |
397 | "Iprod (Var n) vs = vs!n" |
399 | "Iprod (Mul a b) vs = (Iprod a vs * Iprod b vs)" |
398 | "Iprod (Mul a b) vs = (Iprod a vs * Iprod b vs)" |
400 | "Iprod (Pw a n) vs = ((Iprod a vs) ^ n)" |
399 | "Iprod (Pw a n) vs = ((Iprod a vs) ^ n)" |
401 | "Iprod (PNM n k t) vs = (vs ! n)^k * Iprod t vs" |
400 | "Iprod (PNM n k t) vs = (vs ! n)^k * Iprod t vs" |
402 consts prodmul:: "prod \<times> prod \<Rightarrow> prod" |
401 |
403 datatype sgn = Pos prod | Neg prod | ZeroEq prod | NZeroEq prod | Tr | F |
402 datatype sgn = Pos prod | Neg prod | ZeroEq prod | NZeroEq prod | Tr | F |
404 | Or sgn sgn | And sgn sgn |
403 | Or sgn sgn | And sgn sgn |
405 |
404 |
406 primrec Isgn :: " sgn \<Rightarrow> ('a::{linordered_idom}) list \<Rightarrow>bool" |
405 primrec Isgn :: " sgn \<Rightarrow> ('a::{linordered_idom}) list \<Rightarrow>bool" |
407 where |
406 where |