GCD and typesTypes help to make it clear where the computation happens. Let's first start with a few abbreviations. fricas (1) -> P(R, Type: Void
fricas Z==>Integer; Type: Void
fricas Q==>Fraction Z; Type: Void fricas p11: P(P(Z, fricas p12: P(P(Z, fricas gcd(p11,
fricas p21: P(P(Q, fricas p22: P(P(Q, fricas gcd(p21,
fricas p31: P(Fraction P(Q, fricas p32: P(Fraction P(Q, fricas gcd(p31,
fricas p41: Fraction P(P(Q, fricas p42: Fraction P(P(Q, fricas gcd(p41,
|