isField is not really doing what you want. Take a look at this doc:
viewHelp isField
(although the doc isn’t perfect) says that the routine doesn’t do computation to determine if it is a field.
(In fact, this doc has your exact example!).
The purpose of ‘isField’ is more as an internal function: if a ring is a field, then the Groebner basis functions will handle it differently.
This function indicates whether it can do so. In order to use your ring A in this way:
kk = toField A — in your example below
isField kk — will return true.
'isField’ is just returning whether M2 things of this as a field.
I agree that this is misleading. Perhaps we should change it, so that there is an internal function, called something like:
isDeclaredField — current functionality
and then change isField:
isField — actually computes whether the ideal I (in your example) is a maximal ideal.
Changing this will break current code that depends on ‘isField', but perhaps almost no one is using this function at the moment (except in internal M2 code).
— mike