FUNCTION derive_elementary_function_domain

(* SCHEMA step_merged_ap_schema; *)
-- IN AP242
FUNCTION derive_elementary_function_domain
      (ef_val : elementary_function_enumerators ) : tuple_space;
      IF NOT EXISTS(ef_val) THEN
         RETURN (?);
      END_IF;
      CASE ef_val OF
         ef_and :
               RETURN (make_extended_tuple_space(the_zero_tuple_space, the_logicals));
         ef_or :
               RETURN (make_extended_tuple_space(the_zero_tuple_space, the_logicals));
         ef_not :
               RETURN (make_uniform_product_space(the_logicals, 1));
         ef_xor :
               RETURN (make_uniform_product_space(the_logicals, 2));
         ef_negate_i :
               RETURN (make_uniform_product_space(the_integers, 1));
         ef_add_i :
               RETURN (the_integer_tuples);
         ef_subtract_i :
               RETURN (make_uniform_product_space(the_integers, 2));
         ef_multiply_i :
               RETURN (the_integer_tuples);
         ef_divide_i :
               RETURN (make_uniform_product_space(the_integers, 2));
         ef_mod_i :
               RETURN (make_uniform_product_space(the_integers, 2));
         ef_exponentiate_i :
               RETURN (make_uniform_product_space(the_integers, 2));
         ef_eq_i :
               RETURN (make_uniform_product_space(the_integers, 2));
         ef_ne_i :
               RETURN (make_uniform_product_space(the_integers, 2));
         ef_gt_i :
               RETURN (make_uniform_product_space(the_integers, 2));
         ef_lt_i :
               RETURN (make_uniform_product_space(the_integers, 2));
         ef_ge_i :
               RETURN (make_uniform_product_space(the_integers, 2));
         ef_le_i :
               RETURN (make_uniform_product_space(the_integers, 2));
         ef_abs_i :
               RETURN (make_uniform_product_space(the_integers, 1));
         ef_if_i :
               RETURN (make_listed_product_space([ the_logicals, the_integers, the_integers ]));
         ef_negate_r :
               RETURN (make_uniform_product_space(the_reals, 1));
         ef_reciprocal_r :
               RETURN (make_uniform_product_space(the_reals, 1));
         ef_add_r :
               RETURN (the_real_tuples);
         ef_subtract_r :
               RETURN (make_uniform_product_space(the_reals, 2));
         ef_multiply_r :
               RETURN (the_real_tuples);
         ef_divide_r :
               RETURN (make_uniform_product_space(the_reals, 2));
         ef_mod_r :
               RETURN (make_uniform_product_space(the_reals, 2));
         ef_exponentiate_r :
               RETURN (make_listed_product_space([ the_nonnegative_reals, the_reals ]));
         ef_exponentiate_ri :
               RETURN (make_listed_product_space([ the_reals, the_integers ]));
         ef_eq_r :
               RETURN (make_uniform_product_space(the_reals, 2));
         ef_ne_r :
               RETURN (make_uniform_product_space(the_reals, 2));
         ef_gt_r :
               RETURN (make_uniform_product_space(the_reals, 2));
         ef_lt_r :
               RETURN (make_uniform_product_space(the_reals, 2));
         ef_ge_r :
               RETURN (make_uniform_product_space(the_reals, 2));
         ef_le_r :
               RETURN (make_uniform_product_space(the_reals, 2));
         ef_abs_r :
               RETURN (make_uniform_product_space(the_reals, 1));
         ef_acos_r :
               RETURN (make_uniform_product_space(the_neg1_one_interval, 1));
         ef_asin_r :
               RETURN (make_uniform_product_space(the_neg1_one_interval, 1));
         ef_atan2_r :
               RETURN (make_uniform_product_space(the_reals, 2));
         ef_cos_r :
               RETURN (make_uniform_product_space(the_reals, 1));
         ef_exp_r :
               RETURN (make_uniform_product_space(the_reals, 1));
         ef_ln_r :
               RETURN (make_uniform_product_space(the_nonnegative_reals, 1));
         ef_log2_r :
               RETURN (make_uniform_product_space(the_nonnegative_reals, 1));
         ef_log10_r :
               RETURN (make_uniform_product_space(the_nonnegative_reals, 1));
         ef_sin_r :
               RETURN (make_uniform_product_space(the_reals, 1));
         ef_sqrt_r :
               RETURN (make_uniform_product_space(the_nonnegative_reals, 1));
         ef_tan_r :
               RETURN (make_uniform_product_space(the_reals, 1));
         ef_if_r :
               RETURN (make_listed_product_space([ the_logicals, the_reals, the_reals ]));
         ef_negate_c :
               RETURN (make_uniform_product_space(the_complex_numbers, 1));
         ef_reciprocal_c :
               RETURN (make_uniform_product_space(the_complex_numbers, 1));
         ef_add_c :
               RETURN (the_complex_tuples);
         ef_subtract_c :
               RETURN (make_uniform_product_space(the_complex_numbers, 2));
         ef_multiply_c :
               RETURN (the_complex_tuples);
         ef_divide_c :
               RETURN (make_uniform_product_space(the_complex_numbers, 2));
         ef_exponentiate_c :
               RETURN (make_uniform_product_space(the_complex_numbers, 2));
         ef_exponentiate_ci :
               RETURN (make_listed_product_space([ the_complex_numbers, the_integers ]));
         ef_eq_c :
               RETURN (make_uniform_product_space(the_complex_numbers, 2));
         ef_ne_c :
               RETURN (make_uniform_product_space(the_complex_numbers, 2));
         ef_conjugate_c :
               RETURN (make_uniform_product_space(the_complex_numbers, 1));
         ef_abs_c :
               RETURN (make_uniform_product_space(the_complex_numbers, 1));
         ef_arg_c :
               RETURN (make_uniform_product_space(the_complex_numbers, 1));
         ef_cos_c :
               RETURN (make_uniform_product_space(the_complex_numbers, 1));
         ef_exp_c :
               RETURN (make_uniform_product_space(the_complex_numbers, 1));
         ef_ln_c :
               RETURN (make_uniform_product_space(the_complex_numbers, 1));
         ef_sin_c :
               RETURN (make_uniform_product_space(the_complex_numbers, 1));
         ef_sqrt_c :
               RETURN (make_uniform_product_space(the_complex_numbers, 1));
         ef_tan_c :
               RETURN (make_uniform_product_space(the_complex_numbers, 1));
         ef_if_c :
               RETURN (make_listed_product_space([ the_logicals, the_complex_numbers, the_complex_numbers ]));
         ef_subscript_s :
               RETURN (make_listed_product_space([ the_strings, the_integers ]));
         ef_eq_s :
               RETURN (make_uniform_product_space(the_strings, 2));
         ef_ne_s :
               RETURN (make_uniform_product_space(the_strings, 2));
         ef_gt_s :
               RETURN (make_uniform_product_space(the_strings, 2));
         ef_lt_s :
               RETURN (make_uniform_product_space(the_strings, 2));
         ef_ge_s :
               RETURN (make_uniform_product_space(the_strings, 2));
         ef_le_s :
               RETURN (make_uniform_product_space(the_strings, 2));
         ef_subsequence_s :
               RETURN (make_listed_product_space([ the_strings, the_integers, the_integers ]));
         ef_concat_s :
               RETURN (make_extended_tuple_space(the_zero_tuple_space, the_strings));
         ef_size_s :
               RETURN (make_uniform_product_space(the_strings, 1));
         ef_format :
               RETURN (make_listed_product_space([ the_numbers, the_strings ]));
         ef_value :
               RETURN (make_uniform_product_space(the_strings, 1));
         ef_like :
               RETURN (make_uniform_product_space(the_strings, 2));
         ef_if_s :
               RETURN (make_listed_product_space([ the_logicals, the_strings, the_strings ]));
         ef_subscript_b :
               RETURN (make_listed_product_space([ the_binarys, the_integers ]));
         ef_eq_b :
               RETURN (make_uniform_product_space(the_binarys, 2));
         ef_ne_b :
               RETURN (make_uniform_product_space(the_binarys, 2));
         ef_gt_b :
               RETURN (make_uniform_product_space(the_binarys, 2));
         ef_lt_b :
               RETURN (make_uniform_product_space(the_binarys, 2));
         ef_ge_b :
               RETURN (make_uniform_product_space(the_binarys, 2));
         ef_le_b :
               RETURN (make_uniform_product_space(the_binarys, 2));
         ef_subsequence_b :
               RETURN (make_listed_product_space([ the_binarys, the_integers, the_integers ]));
         ef_concat_b :
               RETURN (make_extended_tuple_space(the_zero_tuple_space, the_binarys));
         ef_size_b :
               RETURN (make_uniform_product_space(the_binarys, 1));
         ef_if_b :
               RETURN (make_listed_product_space([ the_logicals, the_binarys, the_binarys ]));
         ef_subscript_t :
               RETURN (make_listed_product_space([ the_tuples, the_integers ]));
         ef_eq_t :
               RETURN (make_uniform_product_space(the_tuples, 2));
         ef_ne_t :
               RETURN (make_uniform_product_space(the_tuples, 2));
         ef_concat_t :
               RETURN (make_extended_tuple_space(the_zero_tuple_space, the_tuples));
         ef_size_t :
               RETURN (make_uniform_product_space(the_tuples, 1));
         ef_entuple :
               RETURN (the_tuples);
         ef_detuple :
               RETURN (make_uniform_product_space(the_generics, 1));
         ef_insert :
               RETURN (make_listed_product_space([ the_tuples, the_generics, the_integers ]));
         ef_remove :
               RETURN (make_listed_product_space([ the_tuples, the_integers ]));
         ef_if_t :
               RETURN (make_listed_product_space([ the_logicals, the_tuples, the_tuples ]));
         ef_sum_it :
               RETURN (make_uniform_product_space(the_integer_tuples, 1));
         ef_product_it :
               RETURN (make_uniform_product_space(the_integer_tuples, 1));
         ef_add_it :
               RETURN (make_extended_tuple_space(the_integer_tuples, the_integer_tuples));
         ef_subtract_it :
               RETURN (make_uniform_product_space(the_integer_tuples, 2));
         ef_scalar_mult_it :
               RETURN (make_listed_product_space([ the_integers, the_integer_tuples ]));
         ef_dot_prod_it :
               RETURN (make_uniform_product_space(the_integer_tuples, 2));
         ef_sum_rt :
               RETURN (make_uniform_product_space(the_real_tuples, 1));
         ef_product_rt :
               RETURN (make_uniform_product_space(the_real_tuples, 1));
         ef_add_rt :
               RETURN (make_extended_tuple_space(the_real_tuples, the_real_tuples));
         ef_subtract_rt :
               RETURN (make_uniform_product_space(the_real_tuples, 2));
         ef_scalar_mult_rt :
               RETURN (make_listed_product_space([ the_reals, the_real_tuples ]));
         ef_dot_prod_rt :
               RETURN (make_uniform_product_space(the_real_tuples, 2));
         ef_norm_rt :
               RETURN (make_uniform_product_space(the_real_tuples, 1));
         ef_sum_ct :
               RETURN (make_uniform_product_space(the_complex_tuples, 1));
         ef_product_ct :
               RETURN (make_uniform_product_space(the_complex_tuples, 1));
         ef_add_ct :
               RETURN (make_extended_tuple_space(the_complex_tuples, the_complex_tuples));
         ef_subtract_ct :
               RETURN (make_uniform_product_space(the_complex_tuples, 2));
         ef_scalar_mult_ct :
               RETURN (make_listed_product_space([ the_complex_numbers, the_complex_tuples ]));
         ef_dot_prod_ct :
               RETURN (make_uniform_product_space(the_complex_tuples, 2));
         ef_norm_ct :
               RETURN (make_uniform_product_space(the_complex_tuples, 1));
         ef_if :
               RETURN (make_listed_product_space([ the_logicals, the_generics, the_generics ]));
         ef_ensemble :
               RETURN (the_tuples);
         ef_member_of :
               RETURN (make_listed_product_space([ the_generics, the_maths_spaces ]));
      OTHERWISE :
            RETURN (?);
      END_CASE;
END_FUNCTION;

Referenced By

Defintion derive_elementary_function_domain is references by the following definitions:
DefinitionType
 derive_function_domain FUNCTION


[Top Level Definitions] [Exit]

Generated by STEP Tools® EXPRESS to HTML Converter
2017-01-19T11:17:24-05:00