Edit page
///fold:
var truthConditionalMeanings = {
  "apple" : {
    "blue_apple" : 0,
    "green_apple" : 0,
    "red_apple" : 0
  },
  "avocado" : {
    "black_avocado" : 0,
    "green_avocado" : 0,
    "red_avocado" : 0
  },
  "banana" : {
    "blue_banana" : 0,
    "brown_banana" : 0,
    "yellow_banana" : 0
  },
  "carrot" : {
    "brown_carrot" : 0,
    "orange_carrot" : 0,
    "pink_carrot" : 0
  },
  "pear" : {
    "green_pear" : 0,
    "orange_pear" : 0,
    "yellow_pear" : 0
  },
  "pepper" : {
    "black_pepper" : 0,
    "orange_pepper" : 0,
    "red_pepper" : 0,
    "green_pepper" : 0
  },
  "tomato" : {
    "green_tomato" : 0,
    "pink_tomato" : 0,
    "red_tomato" : 0
  },
  "fruit" : {
    "blue_apple" : 0,
    "green_apple" : 0,
    "red_apple" : 0,
    "black_avocado" : 0,
    "green_avocado" : 0,
    "red_avocado" : 0,
    "blue_banana" : 0,
    "brown_banana" : 0,
    "yellow_banana" : 0,
    "green_pear" : 0,
    "orange_pear" : 0,
    "yellow_pear" : 0
  },
  "vegetable" : {
    "brown_carrot" : 0,
    "orange_carrot" : 0,
    "pink_carrot" : 0,
    "green_tomato" : 0,
    "pink_tomato" : 0,
    "red_tomato" : 0,
    "black_pepper" : 0,
    "orange_pepper" : 0,
    "red_pepper" : 0,
    "green_pepper" : 0
  },
  "yellow" : {
    "yellow_banana" : 0,
    "yellow_pear" : 0
  },
  "orange" : {
    "orange_carrot" : 0,
    "orange_pear" : 0,
    "orange_pepper" : 0
  },           
  "red" : {
    "red_apple" : 0,
    "red_avocado" : 0,
    "red_pepper" : 0,
    "red_tomato" : 0
  },    
  "pink" : {
    "pink_carrot" : 0,
    "pink_tomato" : 0
  },   
  "green" : {
    "green_apple" : 0,
    "green_avocado" : 0,
    "green_pear" : 0,
    "green_pepper" : 0,
    "green_tomato" : 0
  },    
  "blue" : {
    "blue_apple" : 0,
    "blue_banana" : 0
  },    
  "brown" : {
    "brown_banana" : 0,
    "brown_carrot" : 0
  },    
  "black" : {
    "black_avocado" : 0,
    "black_pepper" : 0
  },
  "black_avocado" : {
    "black_avocado" : 0
  },
  "black_pepper" : {
    "black_pepper" : 0
  },
  "blue_apple" : {
    "blue_apple" : 0
  },
  "blue_banana" : {
    "blue_banana" : 0
  },
  "brown_banana" : {
    "brown_banana" : 0
  },
  "green_apple" : {
    "green_apple" : 0
  },
  "green_avocado" : {
    "green_avocado" : 0
  },
  "green_pear" : {
    "green_pear" : 0
  },
  "green_pepper" : {
    "green_pepper" : 0
  },
  "orange_carrot" : {
    "orange_carrot" : 0
  },
  "orange_pear" : {
    "orange_pear" : 0
  },
  "orange_pepper" : {
    "orange_pepper" : 0
  },
  "pink_carrot" : {
    "pink_carrot" : 0
  },
  "pink_tomato" : {
    "pink_tomato" : 0
  },
  "red_apple" : {
    "red_apple" : 0
  },
  "red_avocado" : {
    "red_avocado" : 0
  },
  "red_pepper" : {
    "red_pepper" : 0
  },
  "red_tomato" : {
    "red_tomato" : 0
  },
  "yellow_banana" : {
    "yellow_banana" : 0
  },
  "yellow_pear" : {
    "yellow_pear" : 0
  },
  "brown_carrot" : {
    "brown_carrot" : 0
  },
  "green_tomato" : {
    "green_tomato" : 0            
  }
};

var realValuedMeanings = {
    "black_avocado" : {
        "blue_apple" : 0.049,
        "green_apple" : 0.064,
        "red_apple" : 0.022,
        "black_avocado" : 0.953,
        "green_avocado" : 0.305,
        "red_avocado" : 0.373,
        "blue_banana" : 0.04,
        "brown_banana" : 0.004,
        "yellow_banana" : 0.09,
        "brown_carrot" : 0,
        "orange_carrot" : 0.126,
        "pink_carrot" : 0.067,
        "green_pear" : 0.08,
        "orange_pear" : 0.156,
        "yellow_pear" : 0.016,
        "black_pepper" : 0.04,
        "green_pepper" : 0.055,
        "orange_pepper" : 0.017,
        "red_pepper" : 0.071,
        "green_tomato" : 0.028,
        "pink_tomato" : 0.01,
        "red_tomato" : 0.132,
    },
    "black_pepper" : {
        "blue_apple" : 0.002,
        "green_apple" : 0.02,
        "red_apple" : 0.046,
        "black_avocado" : 0.12,
        "green_avocado" : 0.058,
        "red_avocado" : 0.027,
        "blue_banana" : 0.06,
        "brown_banana" : 0.01,
        "yellow_banana" : 0.043,
        "brown_carrot" : 0.035,
        "orange_carrot" : 0.02,
        "pink_carrot" : 0.024,
        "green_pear" : 0.086,
        "orange_pear" : 0.006,
        "yellow_pear" : 0.017,
        "black_pepper" : 0.917,
        "green_pepper" : 0.199,
        "orange_pepper" : 0.207,
        "red_pepper" : 0.226,
        "green_tomato" : 0.009,
        "pink_tomato" : 0.034,
        "red_tomato" : 0.061,
    },
    "blue_apple" : {
        "blue_apple" : 0.916,
        "green_apple" : 0.241,
        "red_apple" : 0.218,
        "black_avocado" : 0.035,
        "green_avocado" : 0.051,
        "red_avocado" : 0.021,
        "blue_banana" : 0.083,
        "brown_banana" : 0.126,
        "yellow_banana" : 0.018,
        "brown_carrot" : 0.019,
        "orange_carrot" : 0.027,
        "pink_carrot" : 0.05,
        "green_pear" : 0.023,
        "orange_pear" : 0.03,
        "yellow_pear" : 0.012,
        "black_pepper" : 0.05,
        "green_pepper" : 0.007,
        "orange_pepper" : 0.097,
        "red_pepper" : 0.014,
        "green_tomato" : 0.14,
        "pink_tomato" : 0.05,
        "red_tomato" : 0.006,
    },
    "blue_banana" : {
        "blue_apple" : 0.026,
        "green_apple" : 0.08,
        "red_apple" : 0.032,
        "black_avocado" : 0.022,
        "green_avocado" : 0.014,
        "red_avocado" : 0.166,
        "blue_banana" : 0.913,
        "brown_banana" : 0.179,
        "yellow_banana" : 0.202,
        "brown_carrot" : 0.018,
        "orange_carrot" : 0.044,
        "pink_carrot" : 0.07,
        "green_pear" : 0.032,
        "orange_pear" : 0.038,
        "yellow_pear" : 0.152,
        "black_pepper" : 0.018,
        "green_pepper" : 0.195,
        "orange_pepper" : 0.002,
        "red_pepper" : 0.013,
        "green_tomato" : 0.108,
        "pink_tomato" : 0.064,
        "red_tomato" : 0.029,
    },
    "brown_banana" : {
        "blue_apple" : 0.038,
        "green_apple" : 0.052,
        "red_apple" : 0,
        "black_avocado" : 0.025,
        "green_avocado" : 0.022,
        "red_avocado" : 0.06,
        "blue_banana" : 0.184,
        "brown_banana" : 0.896,
        "yellow_banana" : 0.278,
        "brown_carrot" : 0.019,
        "orange_carrot" : 0.01,
        "pink_carrot" : 0.028,
        "green_pear" : 0.027,
        "orange_pear" : 0.192,
        "yellow_pear" : 0.145,
        "black_pepper" : 0.018,
        "green_pepper" : 0.052,
        "orange_pepper" : 0.01,
        "red_pepper" : 0.037,
        "green_tomato" : 0.015,
        "pink_tomato" : 0.003,
        "red_tomato" : 0.045,
    },
    "brown_carrot" : {
        "blue_apple" : 0.02,
        "green_apple" : 0.155,
        "red_apple" : 0.06,
        "black_avocado" : 0.03,
        "green_avocado" : 0.01,
        "red_avocado" : 0.166,
        "blue_banana" : 0.053,
        "brown_banana" : 0.073,
        "yellow_banana" : 0.098,
        "brown_carrot" : 0.889,
        "orange_carrot" : 0.305,
        "pink_carrot" : 0.182,
        "green_pear" : 0.03,
        "orange_pear" : 0.14,
        "yellow_pear" : 0.043,
        "black_pepper" : 0.059,
        "green_pepper" : 0.012,
        "orange_pepper" : 0.034,
        "red_pepper" : 0.01,
        "green_tomato" : 0.026,
        "pink_tomato" : 0.138,
        "red_tomato" : 0.022,
    },
    "green_apple" : {
        "blue_apple" : 0.198,
        "green_apple" : 0.949,
        "red_apple" : 0.303,
        "black_avocado" : 0.028,
        "green_avocado" : 0.114,
        "red_avocado" : 0.037,
        "blue_banana" : 0.032,
        "brown_banana" : 0.012,
        "yellow_banana" : 0.112,
        "brown_carrot" : 0.012,
        "orange_carrot" : 0.015,
        "pink_carrot" : 0.03,
        "green_pear" : 0.321,
        "orange_pear" : 0.021,
        "yellow_pear" : 0.089,
        "black_pepper" : 0.009,
        "green_pepper" : 0.158,
        "orange_pepper" : 0.015,
        "red_pepper" : 0.043,
        "green_tomato" : 0.336,
        "pink_tomato" : 0.07,
        "red_tomato" : 0.248,
    },
    "green_avocado" : {
        "blue_apple" : 0.031,
        "green_apple" : 0.103,
        "red_apple" : 0.012,
        "black_avocado" : 0.379,
        "green_avocado" : 0.965,
        "red_avocado" : 0.289,
        "blue_banana" : 0.005,
        "brown_banana" : 0.027,
        "yellow_banana" : 0.012,
        "brown_carrot" : 0.017,
        "orange_carrot" : 0.02,
        "pink_carrot" : 0.013,
        "green_pear" : 0.101,
        "orange_pear" : 0.022,
        "yellow_pear" : 0.226,
        "black_pepper" : 0.038,
        "green_pepper" : 0.337,
        "orange_pepper" : 0.086,
        "red_pepper" : 0.043,
        "green_tomato" : 0.107,
        "pink_tomato" : 0.03,
        "red_tomato" : 0.032,
    },
    "green_pear" : {
        "blue_apple" : 0.029,
        "green_apple" : 0.06,
        "red_apple" : 0.068,
        "black_avocado" : 0.183,
        "green_avocado" : 0.038,
        "red_avocado" : 0.033,
        "blue_banana" : 0.047,
        "brown_banana" : 0.013,
        "yellow_banana" : 0.073,
        "brown_carrot" : 0.027,
        "orange_carrot" : 0.03,
        "pink_carrot" : 0.052,
        "green_pear" : 0.943,
        "orange_pear" : 0.262,
        "yellow_pear" : 0.461,
        "black_pepper" : 0.078,
        "green_pepper" : 0.337,
        "orange_pepper" : 0.093,
        "red_pepper" : 0.08,
        "green_tomato" : 0.053,
        "pink_tomato" : 0.009,
        "red_tomato" : 0.146,
    },
    "green_pepper" : {
        "blue_apple" : 0.088,
        "green_apple" : 0.08,
        "red_apple" : 0.034,
        "black_avocado" : 0.045,
        "green_avocado" : 0.057,
        "red_avocado" : 0.155,
        "blue_banana" : 0.022,
        "brown_banana" : 0,
        "yellow_banana" : 0.06,
        "brown_carrot" : 0.01,
        "orange_carrot" : 0.015,
        "pink_carrot" : 0.095,
        "green_pear" : 0.108,
        "orange_pear" : 0.046,
        "yellow_pear" : 0.047,
        "black_pepper" : 0.267,
        "green_pepper" : 0.97,
        "orange_pepper" : 0.262,
        "red_pepper" : 0.269,
        "green_tomato" : 0.137,
        "pink_tomato" : 0.12,
        "red_tomato" : 0.036,
    },
    "green_tomato" : {
        "blue_apple" : 0.04,
        "green_apple" : 0.166,
        "red_apple" : 0.024,
        "black_avocado" : 0.005,
        "green_avocado" : 0.045,
        "red_avocado" : 0.07,
        "blue_banana" : 0.026,
        "brown_banana" : 0.05,
        "yellow_banana" : 0.015,
        "brown_carrot" : 0.014,
        "orange_carrot" : 0.023,
        "pink_carrot" : 0.009,
        "green_pear" : 0.041,
        "orange_pear" : 0.02,
        "yellow_pear" : 0.034,
        "black_pepper" : 0.028,
        "green_pepper" : 0.242,
        "orange_pepper" : 0.055,
        "red_pepper" : 0,
        "green_tomato" : 0.953,
        "pink_tomato" : 0.187,
        "red_tomato" : 0.272,
    },
    "orange_carrot" : {
        "blue_apple" : 0.025,
        "green_apple" : 0.005,
        "red_apple" : 0.185,
        "black_avocado" : 0.021,
        "green_avocado" : 0.008,
        "red_avocado" : 0.06,
        "blue_banana" : 0.022,
        "brown_banana" : 0.012,
        "yellow_banana" : 0.049,
        "brown_carrot" : 0.27,
        "orange_carrot" : 0.962,
        "pink_carrot" : 0.19,
        "green_pear" : 0.012,
        "orange_pear" : 0.104,
        "yellow_pear" : 0.073,
        "black_pepper" : 0.024,
        "green_pepper" : 0.04,
        "orange_pepper" : 0.23,
        "red_pepper" : 0.101,
        "green_tomato" : 0.017,
        "pink_tomato" : 0.007,
        "red_tomato" : 0.167,
    },
    "orange_pear" : {
        "blue_apple" : 0.008,
        "green_apple" : 0.142,
        "red_apple" : 0.054,
        "black_avocado" : 0.015,
        "green_avocado" : 0.008,
        "red_avocado" : 0.089,
        "blue_banana" : 0.017,
        "brown_banana" : 0.039,
        "yellow_banana" : 0.006,
        "brown_carrot" : 0.07,
        "orange_carrot" : 0.36,
        "pink_carrot" : 0.072,
        "green_pear" : 0.303,
        "orange_pear" : 0.795,
        "yellow_pear" : 0.506,
        "black_pepper" : 0.042,
        "green_pepper" : 0.054,
        "orange_pepper" : 0.403,
        "red_pepper" : 0.055,
        "green_tomato" : 0.038,
        "pink_tomato" : 0.055,
        "red_tomato" : 0.044,
    },
    "orange_pepper" : {
        "blue_apple" : 0.022,
        "green_apple" : 0.058,
        "red_apple" : 0.045,
        "black_avocado" : 0.01,
        "green_avocado" : 0.125,
        "red_avocado" : 0.045,
        "blue_banana" : 0.041,
        "brown_banana" : 0.081,
        "yellow_banana" : 0.014,
        "brown_carrot" : 0.102,
        "orange_carrot" : 0.093,
        "pink_carrot" : 0.007,
        "green_pear" : 0.045,
        "orange_pear" : 0.11,
        "yellow_pear" : 0.097,
        "black_pepper" : 0.143,
        "green_pepper" : 0.247,
        "orange_pepper" : 0.924,
        "red_pepper" : 0.363,
        "green_tomato" : 0.105,
        "pink_tomato" : 0.052,
        "red_tomato" : 0.01,
    },
    "pink_carrot" : {
        "blue_apple" : 0.015,
        "green_apple" : 0.053,
        "red_apple" : 0.054,
        "black_avocado" : 0.032,
        "green_avocado" : 0.026,
        "red_avocado" : 0.022,
        "blue_banana" : 0.02,
        "brown_banana" : 0.063,
        "yellow_banana" : 0.008,
        "brown_carrot" : 0.201,
        "orange_carrot" : 0.24,
        "pink_carrot" : 0.446,
        "green_pear" : 0.03,
        "orange_pear" : 0.018,
        "yellow_pear" : 0.024,
        "black_pepper" : 0.01,
        "green_pepper" : 0.03,
        "orange_pepper" : 0.044,
        "red_pepper" : 0,
        "green_tomato" : 0.005,
        "pink_tomato" : 0.128,
        "red_tomato" : 0.032,
    },
    "pink_tomato" : {
        "blue_apple" : 0.086,
        "green_apple" : 0.029,
        "red_apple" : 0.032,
        "black_avocado" : 0.007,
        "green_avocado" : 0.047,
        "red_avocado" : 0.06,
        "blue_banana" : 0.051,
        "brown_banana" : 0.019,
        "yellow_banana" : 0.014,
        "brown_carrot" : 0.03,
        "orange_carrot" : 0.013,
        "pink_carrot" : 0.071,
        "green_pear" : 0,
        "orange_pear" : 0.05,
        "yellow_pear" : 0.01,
        "black_pepper" : 0.01,
        "green_pepper" : 0.003,
        "orange_pepper" : 0.049,
        "red_pepper" : 0.036,
        "green_tomato" : 0.198,
        "pink_tomato" : 0.567,
        "red_tomato" : 0.328,
    },
    "red_apple" : {
        "blue_apple" : 0.176,
        "green_apple" : 0.25,
        "red_apple" : 0.983,
        "black_avocado" : 0.02,
        "green_avocado" : 0.06,
        "red_avocado" : 0.19,
        "blue_banana" : 0.025,
        "brown_banana" : 0.012,
        "yellow_banana" : 0.055,
        "brown_carrot" : 0.003,
        "orange_carrot" : 0.046,
        "pink_carrot" : 0.034,
        "green_pear" : 0.006,
        "orange_pear" : 0.139,
        "yellow_pear" : 0.093,
        "black_pepper" : 0.076,
        "green_pepper" : 0.012,
        "orange_pepper" : 0.016,
        "red_pepper" : 0.09,
        "green_tomato" : 0.095,
        "pink_tomato" : 0.037,
        "red_tomato" : 0.098,
    },
    "red_avocado" : {
        "blue_apple" : 0.008,
        "green_apple" : 0.029,
        "red_apple" : 0.254,
        "black_avocado" : 0.218,
        "green_avocado" : 0.249,
        "red_avocado" : 0.87,
        "blue_banana" : 0.032,
        "brown_banana" : 0.02,
        "yellow_banana" : 0.002,
        "brown_carrot" : 0.019,
        "orange_carrot" : 0.066,
        "pink_carrot" : 0.044,
        "green_pear" : 0.004,
        "orange_pear" : 0.122,
        "yellow_pear" : 0.021,
        "black_pepper" : 0.076,
        "green_pepper" : 0.042,
        "orange_pepper" : 0.02,
        "red_pepper" : 0.017,
        "green_tomato" : 0.098,
        "pink_tomato" : 0.113,
        "red_tomato" : 0.298,
    },
    "red_pepper" : {
        "blue_apple" : 0.015,
        "green_apple" : 0.044,
        "red_apple" : 0.05,
        "black_avocado" : 0.035,
        "green_avocado" : 0.115,
        "red_avocado" : 0.217,
        "blue_banana" : 0.005,
        "brown_banana" : 0.01,
        "yellow_banana" : 0.103,
        "brown_carrot" : 0.022,
        "orange_carrot" : 0.014,
        "pink_carrot" : 0.02,
        "green_pear" : 0.085,
        "orange_pear" : 0.037,
        "yellow_pear" : 0.004,
        "black_pepper" : 0.233,
        "green_pepper" : 0.288,
        "orange_pepper" : 0.388,
        "red_pepper" : 0.971,
        "green_tomato" : 0.018,
        "pink_tomato" : 0.041,
        "red_tomato" : 0.11,
    },
    "red_tomato" : {
        "blue_apple" : 0.012,
        "green_apple" : 0.158,
        "red_apple" : 0.039,
        "black_avocado" : 0.014,
        "green_avocado" : 0.04,
        "red_avocado" : 0.072,
        "blue_banana" : 0.018,
        "brown_banana" : 0.056,
        "yellow_banana" : 0.156,
        "brown_carrot" : 0.107,
        "orange_carrot" : 0.285,
        "pink_carrot" : 0.028,
        "green_pear" : 0.495,
        "orange_pear" : 0.079,
        "yellow_pear" : 0.058,
        "black_pepper" : 0.042,
        "green_pepper" : 0.179,
        "orange_pepper" : 0.082,
        "red_pepper" : 0.235,
        "green_tomato" : 0.275,
        "pink_tomato" : 0.254,
        "red_tomato" : 0.973,
    },
    "yellow_banana" : {
        "blue_apple" : 0.08,
        "green_apple" : 0.019,
        "red_apple" : 0.088,
        "black_avocado" : 0.105,
        "green_avocado" : 0.074,
        "red_avocado" : 0,
        "blue_banana" : 0.168,
        "brown_banana" : 0.327,
        "yellow_banana" : 0.981,
        "brown_carrot" : 0.008,
        "orange_carrot" : 0.09,
        "pink_carrot" : 0.017,
        "green_pear" : 0.049,
        "orange_pear" : 0.093,
        "yellow_pear" : 0.033,
        "black_pepper" : 0.058,
        "green_pepper" : 0.016,
        "orange_pepper" : 0.116,
        "red_pepper" : 0.01,
        "green_tomato" : 0.015,
        "pink_tomato" : 0.014,
        "red_tomato" : 0.022,
    },
    "yellow_pear" : {
        "blue_apple" : 0.058,
        "green_apple" : 0.072,
        "red_apple" : 0.027,
        "black_avocado" : 0.127,
        "green_avocado" : 0.007,
        "red_avocado" : 0.08,
        "blue_banana" : 0.015,
        "brown_banana" : 0.069,
        "yellow_banana" : 0.123,
        "brown_carrot" : 0.105,
        "orange_carrot" : 0.039,
        "pink_carrot" : 0.064,
        "green_pear" : 0.582,
        "orange_pear" : 0.334,
        "yellow_pear" : 0.94,
        "black_pepper" : 0.062,
        "green_pepper" : 0.02,
        "orange_pepper" : 0.131,
        "red_pepper" : 0.29,
        "green_tomato" : 0.116,
        "pink_tomato" : 0.065,
        "red_tomato" : 0.042,
    },
    "black" : {
        "blue_apple" : 0.044,
        "green_apple" : 0.013,
        "red_apple" : 0.085,
        "black_avocado" : 0.952,
        "green_avocado" : 0.09,
        "red_avocado" : 0.066,
        "blue_banana" : 0.051,
        "brown_banana" : 0.204,
        "yellow_banana" : 0.061,
        "brown_carrot" : 0.168,
        "orange_carrot" : 0.056,
        "pink_carrot" : 0.048,
        "green_pear" : 0.056,
        "orange_pear" : 0.056,
        "yellow_pear" : 0.057,
        "black_pepper" : 0.838,
        "green_pepper" : 0.044,
        "orange_pepper" : 0.032,
        "red_pepper" : 0.019,
        "green_tomato" : 0.043,
        "pink_tomato" : 0.013,
        "red_tomato" : 0.025,
    },
    "blue" : {
        "blue_apple" : 0.896,
        "green_apple" : 0.069,
        "red_apple" : 0.079,
        "black_avocado" : 0.087,
        "green_avocado" : 0.067,
        "red_avocado" : 0.028,
        "blue_banana" : 0.917,
        "brown_banana" : 0.059,
        "yellow_banana" : 0.063,
        "brown_carrot" : 0.075,
        "orange_carrot" : 0.059,
        "pink_carrot" : 0.025,
        "green_pear" : 0.07,
        "orange_pear" : 0.102,
        "yellow_pear" : 0.053,
        "black_pepper" : 0.115,
        "green_pepper" : 0.112,
        "orange_pepper" : 0.059,
        "red_pepper" : 0.018,
        "green_tomato" : 0.05,
        "pink_tomato" : 0.075,
        "red_tomato" : 0.052,
    },
    "brown" : {
        "blue_apple" : 0.076,
        "green_apple" : 0.063,
        "red_apple" : 0.231,
        "black_avocado" : 0.103,
        "green_avocado" : 0.135,
        "red_avocado" : 0.368,
        "blue_banana" : 0.007,
        "brown_banana" : 0.868,
        "yellow_banana" : 0.108,
        "brown_carrot" : 0.86,
        "orange_carrot" : 0.141,
        "pink_carrot" : 0.051,
        "green_pear" : 0.053,
        "orange_pear" : 0.107,
        "yellow_pear" : 0.234,
        "black_pepper" : 0.128,
        "green_pepper" : 0.071,
        "orange_pepper" : 0.285,
        "red_pepper" : 0.085,
        "green_tomato" : 0.081,
        "pink_tomato" : 0.012,
        "red_tomato" : 0.16,
    },
    "green" : {
        "blue_apple" : 0.145,
        "green_apple" : 0.791,
        "red_apple" : 0.045,
        "black_avocado" : 0.032,
        "green_avocado" : 0.642,
        "red_avocado" : 0.084,
        "blue_banana" : 0.017,
        "brown_banana" : 0.058,
        "yellow_banana" : 0.031,
        "brown_carrot" : 0.068,
        "orange_carrot" : 0.048,
        "pink_carrot" : 0.046,
        "green_pear" : 0.64,
        "orange_pear" : 0.032,
        "yellow_pear" : 0.099,
        "black_pepper" : 0.101,
        "green_pepper" : 0.929,
        "orange_pepper" : 0.053,
        "red_pepper" : 0.087,
        "green_tomato" : 0.817,
        "pink_tomato" : 0.058,
        "red_tomato" : 0.084,
    },
    "orange" : {
        "blue_apple" : 0.022,
        "green_apple" : 0.027,
        "red_apple" : 0.085,
        "black_avocado" : 0.009,
        "green_avocado" : 0.028,
        "red_avocado" : 0.075,
        "blue_banana" : 0.093,
        "brown_banana" : 0.081,
        "yellow_banana" : 0.219,
        "brown_carrot" : 0.101,
        "orange_carrot" : 0.889,
        "pink_carrot" : 0.079,
        "green_pear" : 0.092,
        "orange_pear" : 0.831,
        "yellow_pear" : 0.341,
        "black_pepper" : 0.063,
        "green_pepper" : 0.142,
        "orange_pepper" : 0.787,
        "red_pepper" : 0.276,
        "green_tomato" : 0.064,
        "pink_tomato" : 0.106,
        "red_tomato" : 0.12,
    },
    "pink" : {
        "blue_apple" : 0.054,
        "green_apple" : 0.08,
        "red_apple" : 0.132,
        "black_avocado" : 0.088,
        "green_avocado" : 0.055,
        "red_avocado" : 0.116,
        "blue_banana" : 0.045,
        "brown_banana" : 0.04,
        "yellow_banana" : 0.079,
        "brown_carrot" : 0.135,
        "orange_carrot" : 0.112,
        "pink_carrot" : 0.498,
        "green_pear" : 0.048,
        "orange_pear" : 0.123,
        "yellow_pear" : 0.031,
        "black_pepper" : 0.04,
        "green_pepper" : 0.025,
        "orange_pepper" : 0.036,
        "red_pepper" : 0.16,
        "green_tomato" : 0.03,
        "pink_tomato" : 0.515,
        "red_tomato" : 0.198,
    },
    "red" : {
        "blue_apple" : 0.06,
        "green_apple" : 0.088,
        "red_apple" : 0.762,
        "black_avocado" : 0.107,
        "green_avocado" : 0.018,
        "red_avocado" : 0.528,
        "blue_banana" : 0.057,
        "brown_banana" : 0.072,
        "yellow_banana" : 0.073,
        "brown_carrot" : 0.105,
        "orange_carrot" : 0.162,
        "pink_carrot" : 0.153,
        "green_pear" : 0.073,
        "orange_pear" : 0.156,
        "yellow_pear" : 0.057,
        "black_pepper" : 0.118,
        "green_pepper" : 0.074,
        "orange_pepper" : 0.141,
        "red_pepper" : 0.864,
        "green_tomato" : 0.064,
        "pink_tomato" : 0.111,
        "red_tomato" : 0.858,
    },
    "yellow" : {
        "blue_apple" : 0.078,
        "green_apple" : 0.187,
        "red_apple" : 0.011,
        "black_avocado" : 0.036,
        "green_avocado" : 0.053,
        "red_avocado" : 0.029,
        "blue_banana" : 0.058,
        "brown_banana" : 0.047,
        "yellow_banana" : 0.766,
        "brown_carrot" : 0.094,
        "orange_carrot" : 0.188,
        "pink_carrot" : 0.058,
        "green_pear" : 0.307,
        "orange_pear" : 0.121,
        "yellow_pear" : 0.703,
        "black_pepper" : 0.073,
        "green_pepper" : 0.048,
        "orange_pepper" : 0.169,
        "red_pepper" : 0.049,
        "green_tomato" : 0.058,
        "pink_tomato" : 0.031,
        "red_tomato" : 0.063,
    },
    "apple" : {
        "blue_apple" : 0.462,
        "green_apple" : 0.961,
        "red_apple" : 0.953,
        "black_avocado" : 0.055,
        "green_avocado" : 0.022,
        "red_avocado" : 0.08,
        "blue_banana" : 0.044,
        "brown_banana" : 0.04,
        "yellow_banana" : 0.043,
        "brown_carrot" : 0.059,
        "orange_carrot" : 0.013,
        "pink_carrot" : 0.052,
        "green_pear" : 0.196,
        "orange_pear" : 0.142,
        "yellow_pear" : 0.14,
        "black_pepper" : 0.058,
        "green_pepper" : 0.03,
        "orange_pepper" : 0.043,
        "red_pepper" : 0.027,
        "green_tomato" : 0.102,
        "pink_tomato" : 0.022,
        "red_tomato" : 0.093,
    },
    "avocado" : {
        "blue_apple" : 0.039,
        "green_apple" : 0.022,
        "red_apple" : 0.052,
        "black_avocado" : 0.812,
        "green_avocado" : 0.966,
        "red_avocado" : 0.696,
        "blue_banana" : 0.016,
        "brown_banana" : 0.048,
        "yellow_banana" : 0.024,
        "brown_carrot" : 0.053,
        "orange_carrot" : 0.034,
        "pink_carrot" : 0.061,
        "green_pear" : 0.055,
        "orange_pear" : 0.055,
        "yellow_pear" : 0.026,
        "black_pepper" : 0.046,
        "green_pepper" : 0.015,
        "orange_pepper" : 0.045,
        "red_pepper" : 0.068,
        "green_tomato" : 0.017,
        "pink_tomato" : 0.065,
        "red_tomato" : 0.023,
    },
    "banana" : {
        "blue_apple" : 0.04,
        "green_apple" : 0.072,
        "red_apple" : 0.07,
        "black_avocado" : 0.036,
        "green_avocado" : 0.046,
        "red_avocado" : 0.07,
        "blue_banana" : 0.419,
        "brown_banana" : 0.657,
        "yellow_banana" : 0.979,
        "brown_carrot" : 0.076,
        "orange_carrot" : 0.079,
        "pink_carrot" : 0.021,
        "green_pear" : 0.021,
        "orange_pear" : 0.01,
        "yellow_pear" : 0.071,
        "black_pepper" : 0.069,
        "green_pepper" : 0.026,
        "orange_pepper" : 0.011,
        "red_pepper" : 0.019,
        "green_tomato" : 0.096,
        "pink_tomato" : 0.037,
        "red_tomato" : 0.013,
    },
    "carrot" : {
        "blue_apple" : 0.035,
        "green_apple" : 0.023,
        "red_apple" : 0.011,
        "black_avocado" : 0.016,
        "green_avocado" : 0.06,
        "red_avocado" : 0.008,
        "blue_banana" : 0.039,
        "brown_banana" : 0.013,
        "yellow_banana" : 0.011,
        "brown_carrot" : 0.565,
        "orange_carrot" : 0.976,
        "pink_carrot" : 0.503,
        "green_pear" : 0.085,
        "orange_pear" : 0.052,
        "yellow_pear" : 0.016,
        "black_pepper" : 0.065,
        "green_pepper" : 0.019,
        "orange_pepper" : 0.083,
        "red_pepper" : 0.036,
        "green_tomato" : 0.013,
        "pink_tomato" : 0.056,
        "red_tomato" : 0.011,
    },
    "fruit" : {
        "blue_apple" : 0.506,
        "green_apple" : 0.929,
        "red_apple" : 0.932,
        "black_avocado" : 0.539,
        "green_avocado" : 0.503,
        "red_avocado" : 0.329,
        "blue_banana" : 0.603,
        "brown_banana" : 0.726,
        "yellow_banana" : 0.973,
        "brown_carrot" : 0.092,
        "orange_carrot" : 0.019,
        "pink_carrot" : 0.051,
        "green_pear" : 0.937,
        "orange_pear" : 0.777,
        "yellow_pear" : 0.905,
        "black_pepper" : 0.182,
        "green_pepper" : 0.183,
        "orange_pepper" : 0.194,
        "red_pepper" : 0.106,
        "green_tomato" : 0.341,
        "pink_tomato" : 0.233,
        "red_tomato" : 0.413,
    },
    "pear" : {
        "blue_apple" : 0.004,
        "green_apple" : 0.14,
        "red_apple" : 0.014,
        "black_avocado" : 0.08,
        "green_avocado" : 0.045,
        "red_avocado" : 0.103,
        "blue_banana" : 0.012,
        "brown_banana" : 0.041,
        "yellow_banana" : 0.074,
        "brown_carrot" : 0.052,
        "orange_carrot" : 0.034,
        "pink_carrot" : 0.013,
        "green_pear" : 0.953,
        "orange_pear" : 0.686,
        "yellow_pear" : 0.924,
        "black_pepper" : 0.06,
        "green_pepper" : 0.02,
        "orange_pepper" : 0.04,
        "red_pepper" : 0.077,
        "green_tomato" : 0.045,
        "pink_tomato" : 0.011,
        "red_tomato" : 0.047,
    },
    "pepper" : {
        "blue_apple" : 0.045,
        "green_apple" : 0.014,
        "red_apple" : 0.026,
        "black_avocado" : 0.08,
        "green_avocado" : 0.069,
        "red_avocado" : 0.104,
        "blue_banana" : 0.073,
        "brown_banana" : 0.06,
        "yellow_banana" : 0.07,
        "brown_carrot" : 0.086,
        "orange_carrot" : 0.043,
        "pink_carrot" : 0.049,
        "green_pear" : 0.016,
        "orange_pear" : 0.054,
        "yellow_pear" : 0.142,
        "black_pepper" : 0.637,
        "green_pepper" : 0.941,
        "orange_pepper" : 0.841,
        "red_pepper" : 0.934,
        "green_tomato" : 0.083,
        "pink_tomato" : 0.063,
        "red_tomato" : 0.049,
    },
    "tomato" : {
        "blue_apple" : 0.034,
        "green_apple" : 0.044,
        "red_apple" : 0.088,
        "black_avocado" : 0.069,
        "green_avocado" : 0.052,
        "red_avocado" : 0.051,
        "blue_banana" : 0.042,
        "brown_banana" : 0.033,
        "yellow_banana" : 0.018,
        "brown_carrot" : 0.041,
        "orange_carrot" : 0.047,
        "pink_carrot" : 0.037,
        "green_pear" : 0.018,
        "orange_pear" : 0.022,
        "yellow_pear" : 0.023,
        "black_pepper" : 0.089,
        "green_pepper" : 0.032,
        "orange_pepper" : 0.052,
        "red_pepper" : 0.018,
        "green_tomato" : 0.738,
        "pink_tomato" : 0.412,
        "red_tomato" : 0.962,
    },
    "vegetable" : {
        "blue_apple" : 0.081,
        "green_apple" : 0.128,
        "red_apple" : 0.182,
        "black_avocado" : 0.332,
        "green_avocado" : 0.455,
        "red_avocado" : 0.236,
        "blue_banana" : 0.054,
        "brown_banana" : 0.077,
        "yellow_banana" : 0.055,
        "brown_carrot" : 0.623,
        "orange_carrot" : 0.895,
        "pink_carrot" : 0.401,
        "green_pear" : 0.115,
        "orange_pear" : 0.14,
        "yellow_pear" : 0.12,
        "black_pepper" : 0.531,
        "green_pepper" : 0.824,
        "orange_pepper" : 0.777,
        "red_pepper" : 0.777,
        "green_tomato" : 0.598,
        "pink_tomato" : 0.336,
        "red_tomato" : 0.745,
    },
}

var getLexicon = function(lexiconStr) {
  return (lexiconStr === 'realValued' ? realValuedMeanings :
          lexiconStr === 'truthConditional' ? truthConditionalMeanings :
          console.error('unknown lexiconStr: ' + lexiconStr));
}

var colors = ["yellow","orange","red","pink",
              "green","blue","brown","black"];
var objects = [["blue","apple"], ["green","apple"], ["red","apple"],
               ["black","avocado"], ["green","avocado"], ["red","avocado"],
               ["blue","banana"], ["brown","banana"], ["yellow","banana"],
               ["brown","carrot"], ["orange","carrot"], ["pink","carrot"],
               ["green","pear"], ["orange","pear"], ["yellow","pear"],
               ["green","tomato"], ["pink","tomato"], ["red","tomato"],               
               ["black","pepper"], ["green","pepper"], ["orange","pepper"],
               ["red","pepper"]];

// for all objects in a given context, can name the color, type, or both
var getPossibleUtts = function(context) {
  return _.uniq(_.flatten(map(function(itemArr) {
    return [itemArr[0], itemArr[1], itemArr.join('_')];
  },context)));
};
///

var initializeModel = function(params) {

  // construct prior over possible misperceptions, based on version in params
  // 1. if 'none', there's no noise, and this prior is a delta on true context
  // 2. if 'addition', then we supplement the context with a 'ghost object'
  // 3. if 'replacement', then we swap out one of the objects with a 'misperception'
  var getNoisyContextPrior = function(trueContext) {
    return Infer({method: 'enumerate'}, function() {
      if(params.noiseType === 'none' || flip(1 - params.noiseRate))
        return trueContext;
      else if(params.noiseType === 'addition')
        return trueContext.concat([uniformDraw(objects)]);
      else if(params.noiseType === 'replacement') {
        var replaceIndex = randomInteger(trueContext.length);
        var replaceObj = uniformDraw(objects);
        return (trueContext.slice(0,replaceIndex)
                .concat([replaceObj])
                .concat(trueContext.slice(replaceIndex+1,trueContext.length)));
      } else {
        console.error("unknown noiseType: " + params.noiseType);
      }
    });
  };
  
  // Cost of full utterances is sum of individual word costs
  var getUtteranceCost = function(utt) {
    return reduce(function(word, memo) {
      var cost = _.contains(colors, word) ? params.cost_color : params.cost_type;
      return memo + cost;
    }, 0, utt.split('_'))
  };

  // Looks up meaning in given lexicon
  // (if no entry, listener assigns vanishingly small probability)
  var meaning = function(utt, object) {
    var objStr = object.join("_");
    var lexicalEntry = params.lexicon[utt];
    return _.has(lexicalEntry, objStr) ? lexicalEntry[objStr] : -1000; 
  };

  // Selects among objects in context using lexicon
  var literalListener = cache(function(utt, context){
    return Infer({method:'enumerate'},function(){
      var object = uniformDraw(context);
      factor(meaning(utt,object)); 
      return object;
    });
  });

  // Selects among utterances given informativity in context and cost of production,
  // marginalizing over possible noise in perception of context
  var speaker = function(context) {
    var target = context[0];
    var possibleutts = getPossibleUtts(context);
    var noisyContextPrior = getNoisyContextPrior(context);

    return Infer({method:'enumerate'},function(){
      var utt = uniformDraw(possibleutts);
      var listener = Infer({method: 'enumerate'}, function() {
        var noisyContext = sample(noisyContextPrior);
        return sample(literalListener(utt, noisyContext));
      });

      factor(params.alpha * listener.score(target)
             - getUtteranceCost(utt));
      return utt;
    });
  };

  return speaker;
};

// lexicon: 'realValued' vs. 'truthConditional'
// noiseType: 'none' vs 'addition' vs 'replacement'
// noiseRate: float in [0,1]
// others: float > 0
var params = {
  lexicon: getLexicon('truthConditional'), 
  noiseType: 'none',
  noiseRate: .5,
  alpha : 10,
  cost_color : 1,
  cost_type : .5
};  

var context = [
  [ 'green', 'apple' ],        
  [ 'blue', 'banana' ],        
  [ 'brown', 'carrot' ]
];

var speaker = initializeModel(params);
viz(speaker(context));

Note that this does not include several ideas we’ve considered in the past: