// returns map(var) -> discriminator static Map gazelle_proposeVarDiscriminators(ai_gazelle_analyzeStatementsForRule_Data data) { LS discriminators = ll(f isInteger); new Map propositions; varLoop: for (S var : data.usedVars) { Pair> p = gazelle_goodAndBadValuesForVariable(data, var); if (nempty(p.a) && nempty(p.b)) for (S discriminator : discriminators) pcall { if (scoreDiscriminator(discriminator, p).allCorrect()) { propositions.put(var, discriminator); continue varLoop; } } } ret propositions; }