title: Prohibit parameter combinations
body: <p>I'm trying to use FsCheck to write a basic property based test for a class that generates random <code>DateTimeOffset</code> values in a given interval.</p>
  
  <pre><code>[Property]
  public void ValueBetweenMinAndMax(DateTimeOffset min, DateTimeOffset max)
  {
      var sut = new DateTimeOffsetGenerator();
      DateTimeOffset actual = sut.Next(min, max);
      Assert.True(min &lt;= actual);
      Assert.True(max &gt;= actual);
  }
  </code></pre>
  
  <p>That test fails pretty quickly when <code>min</code>> <code>max</code> because I validate the input parameters of <code>Next()</code> and throw an <code>ArgumentException</code>in that case.</p>
  
  <pre><code>public DateTimeOffset Next(DateTimeOffset min, DateTimeOffset max)
  {
      if (min &gt; max)
      {
          throw new ArgumentException(nameof(min));
      }
  
      // ...
  }
  </code></pre>
  
  <p>I don't want to change the implementation to swap the input parameters. And I don't want to do that in the test method either.</p>
  
  <p>Is there a way to teach FsCheck to generate the <code>min</code> and <code>max</code> values with the constraint that <code>min</code> must never be greater that <code>max</code>?</p>
  
  <p>Samples in C# would be greatly appreciated because my knowledge about F# is not up to par.</p>