equal
deleted
inserted
replaced
63 let val ts = Data.dest_sum t; |
63 let val ts = Data.dest_sum t; |
64 val dpq = Data.mk_binop Data.div_name pq |
64 val dpq = Data.mk_binop Data.div_name pq |
65 val d1 = mk_times (snd pq,dpq) and d2 = mk_times (dpq,snd pq) |
65 val d1 = mk_times (snd pq,dpq) and d2 = mk_times (dpq,snd pq) |
66 val d = if d1 mem ts then d1 else d2 |
66 val d = if d1 mem ts then d1 else d2 |
67 val m = Data.mk_binop Data.mod_name pq |
67 val m = Data.mk_binop Data.mod_name pq |
68 in mk_plus(mk_plus(d,m),Data.mk_sum(ts \ d \ m)) end |
68 in mk_plus(mk_plus(d,m),Data.mk_sum(ts |> remove (op =) d |> remove (op =) m)) end |
69 |
69 |
70 fun cancel ss t pq = |
70 fun cancel ss t pq = |
71 let val teqt' = Data.prove_eq_sums ss (t, rearrange t pq) |
71 let val teqt' = Data.prove_eq_sums ss (t, rearrange t pq) |
72 in hd (Data.div_mod_eqs RL [teqt' RS transitive_thm]) end; |
72 in hd (Data.div_mod_eqs RL [teqt' RS transitive_thm]) end; |
73 |
73 |